home *** CD-ROM | disk | FTP | other *** search
- ;* DPMI.INC
- ;*
- ;* DPMI functions for protected mode MIDAS
- ;*
- ;* $Id: dpmi.inc,v 1.3 1997/01/16 18:41:59 pekangas Exp $
- ;*
- ;* Copyright 1996,1997 Housemarque Inc.
- ;*
- ;* This file is part of the MIDAS Sound System, and may only be
- ;* used, modified and distributed under the terms of the MIDAS
- ;* Sound System license, LICENSE.TXT. By continuing to use,
- ;* modify or distribute this file you indicate that you have
- ;* read the license and understand and accept it fully.
- ;*
-
-
- ;/***************************************************************************\
- ;* struct dpmiRealCallRegs
- ;* -----------------------
- ;* Description: Real mode calling register value structure
- ;\***************************************************************************/
-
- STRUC dpmiRealCallRegs
- rEDI DD ?
- rESI DD ?
- rEBP DD ?
- reserved DD ?
- rEBX DD ?
- rEDX DD ?
- rECX DD ?
- rEAX DD ?
- flags DW ?
- rES DW ?
- rDS DW ?
- rFS DW ?
- rGS DW ?
- rIP DW ?
- rCS DW ?
- rSP DW ? ; if SS and SP are zero, DPMI will
- rSS DW ? ; provide a small (30 words) stack
- ENDS
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiAllocDescriptor(unsigned *descriptor);
- ;*
- ;* Description: Allocate LDT descriptor. Use dpmiFreeDescriptor to deallocate.
- ;*
- ;* Input: unsigned *descriptor pointer to descriptor number
- ;*
- ;* Returns: MIDAS error code. Descriptor number is written to *descriptor.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiAllocDescriptor : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiFreeDescriptor(unsigned descriptor);
- ;*
- ;* Description: Deallocates an LDT descriptor.
- ;*
- ;* Input: unsigned descriptor descriptor to deallocate
- ;*
- ;* Returns: MIDAS error code
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiFreeDescriptor : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiSetSegmentBase(unsigned selector, ulong baseAddr);
- ;*
- ;* Description: Changes the 32-bit linear base address of a selector.
- ;*
- ;* Input: unsigned selector selector number
- ;* ulong baseAddr 32-bit linear base address for
- ;* selector
- ;*
- ;* Returns: MIDAS error code.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiSetSegmentBase : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiGetSegmentBase(unsigned selector, ulong *baseAddr);
- ;*
- ;* Description: Reads the 32-bit linear base address of a selector.
- ;*
- ;* Input: unsigned selector selector number
- ;* ulong *baseAddr pointer to the 32-bit linear base
- ;* address of the selector
- ;*
- ;* Returns: MIDAS error code. Selector base address is written to
- ;* *baseAddr.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiGetSegmentBase : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiSetSegmentLimit(unsigned selector, ulong limit);
- ;*
- ;* Description: Changes the limit of a segment selector.
- ;*
- ;* Input: unsigned selector selector number
- ;* ulong limit 32-bit segment limit
- ;*
- ;* Returns: MIDAS error code.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiSetSegmentLimit : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiSetSegmentAccessRights(unsigned selector,
- ;* unsigned accessRights);
- ;*
- ;* Description: Changes the access rights of a selector
- ;*
- ;* Input: unsigned selector selector
- ;* unsigned accessRights new access rights for the segment
- ;*
- ;* Returns: MIDAS error code.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiSetSegmentAccessRights : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiCreateCodeAlias(unsigned codeSelector,
- ;* unsigned *selector);
- ;*
- ;* Description: Creates a data descriptor that has the same base and limit
- ;* as a code segment descriptor. Use dpmiFreeDescriptor() to
- ;* deallocate data descriptor.
- ;*
- ;* Input: unsigned codeSelector code segment selector
- ;* unsigned *selector pointer to data segment selector
- ;*
- ;* Returns: MIDAS error code. New data selector is written to *selector.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiCreateCodeAlias : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiAllocDOSMem(unsigned numParagraphs, unsigned *segment,
- ;* unsigned *selector);
- ;*
- ;* Description: Allocates memory from DOS free memory pool, below 1MB. Use
- ;* dpmiFreeDOSMem() to deallocate.
- ;*
- ;* Input: unsigned numParagraphs number of paragraphs to allocate
- ;* unsigned *segment pointer to real mode segment
- ;* unsigned *selector pointer to selector
- ;*
- ;* Returns: MIDAS error code. Real mode segment of allocated block is
- ;* written to *segment. Protected mode selector for block is
- ;* written to *selector.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiAllocDOSMem : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: dpmiFreeDOSMem(unsigned selector);
- ;*
- ;* Description: Deallocates memory allocated with dpmiAllocDOSMem().
- ;*
- ;* Input: unsigned selector selector for allocated block
- ;*
- ;* Returns: MIDAS error code
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiFreeDOSMem : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiRealModeInt(unsigned intNum,
- ;* dpmiRealCallRegs *registers);
- ;*
- ;* Description: Simulates a real mode interrupt using DPMI service 0x0300.
- ;* *register MUST contain appropriate register values for
- ;* interrupt (CS:IP is ignored).
- ;*
- ;* Input: unsigned intNum interrupt number
- ;* dpmiRealCallRegs *registers DPMI real mode calling struct
- ;*
- ;* Returns: MIDAS error code. Register values returned by the interrupt
- ;* are written to *registers.
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiRealModeInt : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiLockMemory(ulong start, ulong numBytes);
- ;*
- ;* Description: Locks a region of memory to prevent it from being paged. The
- ;* memory can be unlocked using dpmiUnlockMemory().
- ;*
- ;* Input: ulong start memory region start address
- ;* ulong numBytes memory region length in bytes
- ;*
- ;* Returns: MIDAS error code
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiLockMemory : _funct
-
-
-
-
- ;/***************************************************************************\
- ;*
- ;* Function: int dpmiUnlockMemory(ulong start, ulong numBytes);
- ;*
- ;* Description: Unlocks a region of memory locked with dmpiLockMemory().
- ;*
- ;* Input: ulong start memory region start address
- ;* ulong numBytes memory region length in bytes
- ;*
- ;* Returns: MIDAS error code
- ;*
- ;\***************************************************************************/
-
- GLOBAL LANG dpmiUnlockMemory : _funct
-
-
-
-
-
- ;/***************************************************************************\
- ;* enum dpmiFunctIDs
- ;* -----------------
- ;* Description: ID numbers for DPMI functions
- ;\***************************************************************************/
-
- ENUM dpmiFunctIDs \
- ID_dpmiAllocDescriptor = ID_dpmi, \
- ID_dpmiFreeDescriptor, \
- ID_dpmiSetSegmentBase, \
- ID_dpmiSetSegmentLimit, \
- ID_dpmiSetSegmentAccessRights, \
- ID_dpmiCreateCodeAlias, \
- ID_dpmiAllocDOSMem, \
- ID_dpmiFreeDOSMem, \
- ID_dpmiRealModeInt, \
- ID_dpmiGetSegmentBase, \
- ID_dpmiLockMemory, \
- ID_dpmiUnlockMemory
-
-
- ;* $Log: dpmi.inc,v $
- ;* Revision 1.3 1997/01/16 18:41:59 pekangas
- ;* Changed copyright messages to Housemarque
- ;*
- ;* Revision 1.2 1996/05/30 22:38:46 pekangas
- ;* no changes?
- ;*
- ;* Revision 1.1 1996/05/22 20:49:33 pekangas
- ;* Initial revision
- ;*